﻿/*
创建人：zhangrj
日期：2022-07-06
描述：排产确认（检验、外委、BOM、工装）页面js
*/
var page = {
    pageType: getParam("type"), //type:1-转工（此页面已弃用，已在其他页面实现），2-检验，3-外委，4-BOM，5-工装工具
    url: getRootPath() + "/Ashx/ApsHandler/ApsPlanConfirmHandler.ashx", //后台处理url,
    //分页参数
    pageTotal: 0,
    pageSize: 10,
    pageNumber: 1,
    init: function () {
        if (page.pageVaild()) { //验证传参
            page.bind();
            page.initPage();
        }
    },
    //绑定事件
    bind: function () {
        customizedEasyuiPagination('pp'); //定制化分页
        //排产列表加载
        $("#gdApsPlanInfo").datagrid({
            onLoadSuccess: function (data) {
                $('#pp').pagination('refresh', {	// 改变选项，并刷新分页栏信息
                    total: page.pageTotal,
                    pageSize: page.pageSize,
                    pageNumber: page.pageNumber
                });
                customizedEasyuiPagination('pp'); //定制化分页
            },
            onDblClickCell: function (index, field, value) {
                $(this).datagrid('beginEdit', index);
                var ed = $(this).datagrid('getEditor', { index: index, field: 'FEEDBACKDATE' });
                $(ed.target).focus();
                $(this).datagrid('checkRow', index);
            },
            onClickRow: function (index) {
                $(this).datagrid('acceptChanges')
            },
            columns: [[
                 { field: 'ck', title: '选择', checkbox: true },
                 { field: 'MFGORDERNAME', title: '订单号', width: 150 },
                 { field: 'PRODUCTBATCH', title: '件号/批次号', width: 150 },
                 { field: 'DESCRIPTION', title: '零件名称', width: 150 },
                 { field: 'QTY', title: '计划数', width: 60 },
                 { field: 'MAINFACTORYNAME', title: '主制工厂', width: 120 },
                 { field: 'ASSISFACTORYNAME', title: '承制工厂', width: 120 },
                 { field: 'CONTAINERTYPENAME', title: '批次类型', width: 100 },
                 { field: 'CREATEDATE', title: '计划生成时间', width: 100,
                     formatter: function (value, row, index) {
                         if (!isNullOrWhiteSpaceStr(value)) {
                             return dayjs(value).format('YYYY-MM-DD');
                         }
                     }
                 },
                 { field: 'WORKFLOWSTEPNAME', title: '工序', width: 120 },
                 { field: 'STARTTIME', title: '计划开始时间', width: 100,
                     formatter: function (value, row, index) {
                         if (!isNullOrWhiteSpaceStr(value)) {
                             return dayjs(value).format('YYYY-MM-DD');
                         }
                     }
                 },
                 { field: 'ENDTIME', title: '计划结束时间', width: 100,
                     formatter: function (value, row, index) {
                         if (!isNullOrWhiteSpaceStr(value)) {
                             return dayjs(value).format('YYYY-MM-DD');
                         }
                     }
                 },
                 { field: 'FEEDBACKDATE', title: '反馈开始时间', width: 120, editor: 'datebox',
                     formatter: function (value, row, index) {
                         if (!isNullOrWhiteSpaceStr(value)) {
                             return dayjs(value).format('YYYY-MM-DD');
                         }
                     }
                 },
                 { field: 'STATUSNAME', title: '确认状态', width: 60 }
                ]]
        });
        //BOM列表加载
        $("#gdBomInfo").datagrid({
            columns: [[
                 { field: 'PRODUCTNAME', title: '件号', width: 150 },
                 { field: 'PRODUCTDESC', title: '零件名称', width: 150 },
                 { field: 'BOMNAME', title: 'BOM', width: 120 },
                 { field: 'BOMREVISION', title: 'BOM版本', width: 80 },
                 { field: 'SPECNAME', title: '工序', width: 150 },
                 { field: 'SPECREVISION', title: '工序版本', width: 80 },
                 { field: 'QTYREQUIRED', title: '需求数量', width: 80 }
                ]]
        });
        //工装列表加载
        $("#gdGZInfo").datagrid({
            columns: [[
                 { field: 'TOOLNAME', title: '工具编码', width: 150 },
                 { field: 'TOOLDESC', title: '工具名称', width: 150 },
                 { field: 'QTYREQUIRED', title: '数量', width: 100 },
                 { field: 'TOOLTYPE', title: '工具类型', width: 100 }
                ]]
        });
        //设备列表分页事件
        $('#pp').pagination({
            onSelectPage: function (pageNumber, pageSize) {
                customizedEasyuiPagination('pp'); //定制化分页
                page.pageSize = pageSize; page.pageNumber = pageNumber;
                page.search();
            }
        });
        //绑定分页go按钮
        $('#pageGo').on("click", function () {
            clearMessage();
            var pageNumber = $(this).parents('tr').find('.pagination-num').val();
            page.pageNumber = pageNumber;
            page.search();
        });
        //查询信息
        $("#btnSearch").on("click", function () {
            page.clearPage(false, true, true);
            page.pageNumber = 1;
            page.search();
        });
        //重置查询
        $("#btnReset").on("click", function () {
            page.clearPage(true, true, true);
        });
        //确认
        $("#btnConfirm").on("click", function () {
            page.planConfirm();
        });
        $(document).ready(function () { //页面加载完成才绑定下拉事件，否则会报错
            $('#selStatus').combobox({
                onSelect: function (record) {
                    if (record.value === "2") {//已确认
                        clearEasyuiDataGrid("gdApsPlanInfo");
                        $("#divConfirm").hide();
                    } else {
                        clearEasyuiDataGrid("gdApsPlanInfo");
                        $("#divConfirm").show();
                    }
                }
            });
            //扫描批次事件
            $('#txtScanContainer').textbox({
                onChange: function (n, o) {
                    page.pageNumber = 1;
                    page.search();
                }
            });
            //扫描批次事件
            $('#txtScanOrder').textbox({
                onChange: function (n, o) {
                    page.pageNumber = 1;
                    page.search();
                }
            });
        });
    },
    //初始化页面
    initPage: function () {
        page.post(page.url, { action: "InitPageData" }, true, function (res) {
            //            $("#selMainFactory").combobox({//主制分厂
            //                valueField: 'FACTORYID',
            //                textField: 'FACTORYNAME',
            //                panelHeight: 200,
            //                data: res.DBTable //下拉数据
            //            });
            $("#txtWorkCenter").combobox({//工区
                valueField: 'WORKCENTERID',
                textField: 'WORKCENTERNAME',
                panelHeight: 200,
                data: res.DBDataSet.dtWorkCenter //下拉数据
            });
            $("#selAssistFactory").combobox({//承制分厂
                valueField: 'FACTORYID',
                textField: 'FACTORYNAME',
                panelHeight: 200,
                data: res.DBDataSet.dtMainFactory //下拉数据
            });
        });
    },
    //绑定Bom和工装详细数据（type:4-BOM,5-工装工具）
    loadBomAndGzDatas: function (row, type) {
        var formData = {
            action: "GetBomAndGZDatas",
            workflowId: row.WORKFLOWID,
            workflowStepId: row.WORKFLOWSTEPID,
            specId: row.SPECID,
            type: type
        };
        page.post(page.url, formData, true, function (res) {
            if (!res.Result) {
                displayMessage(res.Message, res.Result);
                return;
            }
            if (type === "4") {
                $("#gdBomInfo").datagrid('loadData', { rows: res.DBTable });
            } else {
                $("#gdGZInfo").datagrid('loadData', { rows: res.DBTable });
            }
        });
    },
    //查询
    search: function () {
        var params = [{
            scanContainer: $("#txtScanContainer").textbox("getValue"), //扫描批次号
            scanOrder: $("#txtScanOrder").textbox("getValue"), //订单号
            containerName: $("#txtContainerNo").textbox("getValue"), //批次号
            //            mainFactory: $("#selMainFactory").combobox("getValue"), //主制分厂
            workCenterID: $("#txtWorkCenter").combobox("getValue"), //工区
            assistFactory: $("#selAssistFactory").combobox("getValue"), //承制分厂
            status: $("#selStatus").combobox("getValue") //确认状态（0：未下发，1：下发，2：确认）
        }];
        var formData = {
            pageSize: page.pageSize,
            pageNumber: page.pageNumber,
            type: page.pageType, //功能参数
            action: "GetApsPlanDatasByPage",
            params: JSON.stringify(params)
        };
        page.post(page.url, formData, true, function (res) {
            if (!res.Result) {
                displayMessage(res.Message, res.Result);
                return;
            }
            page.pageTotal = res.RowCount;
            $("#gdApsPlanInfo").datagrid('loadData', { total: res.RowCount, rows: res.DBTable });
        });
    },
    //确认
    planConfirm: function () {
        $("#gdApsPlanInfo").datagrid('acceptChanges')
        $('#btnConfirm').linkbutton('disable'); //禁用按钮
        var resData = page.isRowVaild();
        if (!resData.result) {
            displayMessage2(resData.message, false, ["btnConfirm"]);
            return;
        }
        page.post(page.url, { action: "SaveApsPlanConfirmDatas", datas: JSON.stringify(resData.datas) }, true, function (res) {
            if (res.Result) {
                page.search();
            }
            displayMessage2(res.Message, res.Result, ["btnConfirm"]);
        });
    },
    //验证行是否有效
    isRowVaild: function () {
        var res = { result: true, message: "" };
        var rows = $("#gdApsPlanInfo").datagrid('getChecked'); //获取勾选的行
        if (rows.length === 0) {
            res.result = false;
            res.message = "未选择数据";
            return res;
        }
        res.datas = [];
        for (var i = 0; i < rows.length; i++) {
            if (rows[i].STATUS === "0") { //只更新未确认的
                res.datas.push({ apsPlanDetailId: rows[i].APSPLANDETAILID, feedBackDate: rows[i].FEEDBACKDATE });
            }
        }
        return res
    },
    //清空页面（查询，结果，bom工装详情）
    clearPage: function (query, result, detail) {
        clearMessage();
        if (query) {
            $("#txtScanContainer").textbox("setValue", ""); //扫描批次号
            $("#txtScanOrder").textbox("setValue", ""); //扫描订单号
            $("#txtContainerNo").textbox("setValue", ""); //批次号
            $("#txtWorkCenter").combobox("setValue", "");//工区
            //            $("#selMainFactory").combobox("setValue", ""); //主制分厂
            $("#selAssistFactory").combobox("setValue", ""); //承制分厂
            $("#selStatus").combobox("setValue", ""); //确认状态
        }
        if (result) {
            clearEasyuiDataGrid("gdApsPlanInfo");
        }
        if (detail) {
            clearEasyuiDataGrid("gdBomInfo");
            clearEasyuiDataGrid("gdGZInfo");
        }
    },
    //url参数验证
    pageVaild: function () {
        $("#GZ_Bom_Result").hide();
        if (isNullOrWhiteSpaceStr(page.pageType)) {
            displayMessage("未指定功能类型", false);
            return false;
        }
        var isvaild = true;
        var tarr = ["2", "3", "4", "5"];
        if ($.inArray(page.pageType, tarr) === -1) {
            displayMessage("参数出错", false);
            isvaild = false;
        }
        if (isvaild) {
            if (page.pageType === "4") { //如果是bom，显示
                $("#GZ_Bom_Result").show();
                $("#tt").tabs("close", "工装工具");
                $("#tt").tabs("select", "BOM");
                $("#gdApsPlanInfo").datagrid({
                    onSelect: function (rowIndex, rowData) {
                        page.loadBomAndGzDatas(rowData, page.pageType);
                    },
                    onUnselect: function (rowIndex, rowData) {
                        clearEasyuiDataGrid("gdBomInfo");
                        clearEasyuiDataGrid("gdGZInfo");
                    }
                });
            }
            if (page.pageType === "5") { //如果是工装，显示
                $("#GZ_Bom_Result").show();
                $("#tt").tabs("close", "BOM");
                $("#tt").tabs("select", "工装工具");
                $("#gdApsPlanInfo").datagrid({
                    onSelect: function (rowIndex, rowData) {
                        page.loadBomAndGzDatas(rowData, page.pageType);
                    },
                    onUnselect: function (rowIndex, rowData) {
                        clearEasyuiDataGrid("gdBomInfo");
                        clearEasyuiDataGrid("gdGZInfo");
                    }
                });
            }
        }
        return isvaild;
    },
    //post数据（路径，参数，是否异步，成功返回方法）
    post: function (url, param, async, callback) {
        $.ajax({
            type: "Post",
            url: url,
            data: param,
            cashe: false,
            async: async,
            dataType: "json",
            beforeSend: function () {
                $.messager.progress({ text: '', msg: '处理中...' });
            },
            success: function (data) {
                $.messager.progress('close');
                callback(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $.messager.progress('close');
                displayMessage(XMLHttpRequest.responseText, false);
                $("body").find(".easyui-linkbutton").each(function () {
                    $(this).linkbutton('enable');
                });
            }
        });
    }
};
$(document).ready(function () {
    page.init();
});